package ModelLayer;
import java.util.ArrayList;

/**
 * Write a description of class OrdreContainer here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */

public class OrdreContainer
{
    private Ordre ordre;
    private ArrayList<Ordre> nyOrdre;
    private static OrdreContainer instance;

    /**
     * Konstruktør for objekter af klassen OrdreContainer, 
     * hvor man indtaster værdier til de forskellige attributter.
     * Samtidigt har den en arraylist over Ordre klassens objekter, som hedder myOrdre.
     */
    private OrdreContainer()
    {
        nyOrdre = new ArrayList<Ordre>();
    }
    
    /**
     * Vi har brugt singelton her fordi det sikre os at vi kun har en af denne klasse.
     * Det gør at når vi skal tilføje et objekt af person er vi ikke i tvivl om hvor den skal tilføjes.
     * Eller hvor den er bagefter, fordi der er kun en af denne klasse som den kan tilføjes/være i.
     */
    public static OrdreContainer getInstance()
    {
        if(instance == null)
        {
            instance = new OrdreContainer();
        }
        return instance;
    }
    
    /**
     * Metoden her modtager en værdi id af int som vi angiver og derefter går den ind i en while loop.
     * Her søger den efter den angivet id værdi og hvis den finder værdien returner den et objekt af Ordre. 
     * Ellers lægger den en til index og går videre og søger.
     */
    public Ordre findOrdre(int ordreId)
    {
        int index = 0;
        boolean found = false;
        while(index < nyOrdre.size() && !found)
        {
            if(ordreId == (nyOrdre.get(index).getOrdreId()))
            {
                found = true;
           
            }
            else
            {
                index ++;
            }
        }
        return nyOrdre.get(index);
    }
    
    /**
     * Metoden her tager et objekt af Ordre og kan tilføje det til arraylisten rents, 
     * som defineres i konstruktøren.
     */
    public void tilfoejOrdre(Ordre ordre)
    {
        nyOrdre.add(ordre);
    }
    
    /**
     * Metoden her bruger metoden findRent til af søge efter et objekt af en Ordre med en id værdi af int som vi angiver.
     * Når objektet af Ordre er fundet går den ind i arraylisten rents og fjerner objektet.
     */
    public void fjernOrdre(int ordreId)
    {
        Ordre o = findOrdre(ordreId);
        nyOrdre.remove(o);
    }
    
    /**
     * Denne metode går ind og henter vores indhold af arraylisten, som er af Ordre klassen.
     */
    public ArrayList<Ordre> listAllOrdre()
    {
        return nyOrdre;
    }
}
